在Rust的世界中,一個強大的CLI工具不只是單一腳本;它是一個精心設計的 專案藍圖。要打造像 grep這樣的工具,我們需將工作分為 二進位套件(Binary Crate) 與 函式庫套件(Library Crate)。
1. 咖啡機的比喻
想像一台高階咖啡機。其中 lib.rs 包含加熱水和研磨咖啡豆的內部機制——也就是「引擎邏輯」。而 main.rs 是使用者按下的外部按鈕——也就是「介面」。透過將它們分離,技術人員便能在不每次都按下實體按鈕(二進位套件)的情況下,測試加熱器(函式庫)。
2. 搭建引擎結構
我們從執行 $ cargo new minigrep開始。雖然這會建立一個 main.rs,但我們必須手動新增 src/lib.rs。這種架構上的區分確保核心搜尋邏輯保持 解耦 與CLI解析分離,使測試更簡單且更具模組化。
3. 可測試的模組化
透過將邏輯移至 lib.rs,我們可以利用Rust的測試框架,在受控環境中調用函式庫函數。我們在二進位套件中使用 use minigrep; 來匯入引擎,同時讓命令列解析邏輯保持隔離。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>